// 二、请说出下列最终的执行结果，并解释为什么

var tmp = 123

if (true) {
  console.log(tmp)
  let tmp
}

// 答：结果会报错，不能在初始化之前调用 tmp
// 原因：因为只要块级作用域内存在 let 命令，它所声明的变量就“绑定”这个区域，不再受外部的影响，而使用 let 声明的变量不会被提升，打印 tmp 时，还未声明，所以会报错